package com.lzj.server.constant.enums;

/**
 * 系统权限标识枚举
 * 用于统一管理系统中所有权限标识（permission_code），便于维护和使用
 */

public enum PermissionEnum {

    // 用户管理相关权限
    USER_LIST("user:list", "查看用户列表"),
    USER_BAN("user:ban", "封禁用户"),
    USER_UNBAN("user:unban", "解封用户"),

    // 视频管理相关权限
    VIDEO_UPLOAD("video:upload", "上传视频"),
    VIDEO_REVIEW("video:audit", "审核视频"),
    VIDEO_DELETE("video:delete", "删除视频"),
    VIDEO_VIEW("video:view", "查看视频列表"),
    VIDEO_RECOMMEND("video:recommend", "设置推荐"),

    // 评论管理
    COMMENT_LIST("comment:list", "查看评论列表"),
    COMMENT_DELETE("comment:delete", "删除评论"),
    COMMENT_REVIEW("comment:audit", "审核评论"),

    // 举报管理
    REPORT_LIST("report:list", "查看举报记录"),
    REPORT_HANDLE("report:handle", "处理举报"),

    // 系统管理
    ROLE_ADD("role:add", "新增角色"),
    ROLE_UPDATE("role:update", "修改角色"),
    ROLE_DELETE("role:delete", "删除角色"),
    PERMISSION_ADD("permission:add", "添加权限"),
    PERMISSION_ASSIGN("permission:assign", "分配权限");

    private final String code;
    private final String name;

    PermissionEnum(String code, String description) {
        this.code = code;
        this.name = description;
    }

    /**
     * 获取权限码
     */
    public String getCode() {
        return code;
    }

    /**
     * 获取权限描述
     */
    public String getDescription() {
        return name;
    }

    /**
     * 根据权限码获取对应枚举
     */
    public static PermissionEnum fromCode(String code) {
        for (PermissionEnum permission : values()) {
            if (permission.code.equals(code)) {
                return permission;
            }
        }
        return null;
    }
}
